package cn.tedu.service;

import cn.tedu.dao.UserMapper;
import cn.tedu.pojo.Role;
import cn.tedu.pojo.User;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.PageInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 用户数据业务层实现类
 */
@Service
public class UserServiceImpl implements UserService{
    // 业务层依赖持久层对象，因此注入
    @Autowired(required = false)
//    @Resource
    private UserMapper userDao;

    // 登录功能
    public User login(String userCode, String password) {
        System.out.println(userDao);
        System.out.println("userCode = " + userCode );
        System.out.println("password = " + password);
        System.out.println("userDao = " + userDao);
        // 持久层对象调用功能方法
        User result = userDao.getLoginUser(userCode);
        if (result != null){
            // 程序走到这里，标识通过编号查到了对象，但是密码还需校验
            if (!result.getUserPassword().equals(password)){
                return null;
            }
            // 程序走到这里，标识密码是正确的。
            return result;
        }
        return null;
    }

    @Override
    public PageInfo<User> findAll(String queryUserName, Integer queryUserRole, Integer pageIndex, Integer pageSize) {
        //开启分页
        PageHelper.startPage(pageIndex,pageSize); // 该语句一定要放在查询语句之前，且中间不能有其他操作
        List<User> users = userDao.getUserList(queryUserName,queryUserRole);
        // 不能将查询的结构直接返回，应该先转化为pageInfo对象的数据
        PageInfo<User> pi = new PageInfo<>(users);
//        pi.setList(users);
        return pi;
    }

    @Override
    public List<Role> getRoleList() {
        List<Role> roles = userDao.getRoleList();
        return roles;
    }
}
